import tensorflow as tf

#合并
a=tf.random.normal([4,35,8])
print('张量a的shape:\n',a.shape)
print('--------------------')
b=tf.random.normal([6,35,8])
print('张量b的shape:\n',b.shape)
print('--------------------')
#拼接  ————约束： 非合并维度的长度必须一致
c=tf.concat([a,b],axis=0)
print('张量c的shape:\n',c.shape)

#堆叠 ————约束： 所有堆叠维度的长度必须一致
aa=tf.random.normal([4,35,8])
print('张量aa的shape:\n',aa.shape)
print('--------------------')
bb=tf.random.normal([4,35,8])
print('张量bb的shape:\n',bb.shape)
print('--------------------')
cc=tf.stack([aa,bb],axis=1)
print('张量cc的shape:\n',cc.shape)


aaa=tf.random.normal([2,2,2])
bbb=tf.random.normal([2,2,2])
ccc=tf.stack([aaa,bbb],axis=1)
print('张量ccc的shape:\n',ccc.shape)

#分割
x = tf.random.normal([10,35,8])
# num_or_size_splits 切割方案， 当num_or_size_splits 为单个数值是，表示登场切割的分数； 当num_or_size_splits 为list是，list的每个元素表示分割没份的长度
# axis  指定分割的维度索引
result = tf.split(x,num_or_size_splits=10,axis=0)
len(result)
print(result[0])
# 特别的，如果希望在某个维度上全部按照长度为1 的方式分割，还可以使用一下方式
x = tf.random.normal([10,35,8])
result = tf.unstack(x,axis=0)
len(result)
print(result[0])